package com.station.param.request.payBill;

import lombok.Data;
import java.util.Date;
import java.util.List;

@Data
public class PayBillModel {
    private ModelDTO[] model;

    @Data
    public static class ModelDTO {
        private Long fid;
        private BillTypeIdDTO fBillTypeID;
        private String FBillNo;
        private OrgIdDTO fPayOrgId;
        private Date fDate;
        private String fContactUnitType;
        private String FPAYUNITTYPE;
        private NumberEntity FPAYUNIT;
        private CurrencyIdDTO fCurrencyId;
        private ContactUnitDTO fContactUnit;
        private OrgIdDTO fSettleOrgId;
        private String fRectUnitType;
        private RectUnitDTO fRectUnit;
        private SettleCurDTO fSettleCur;
        private String fDocumentStatus;
        private DeptIdDTO fPurchaseDeptId;
        private GroupIdDTO fPurchaserGroupId;
        private String fBusinessType;
        private String fCancelStatus;
        private MainBookIdDTO fSettleMainBookId;
        private String fSourceBillNumber;
        private PayBillEntryDTO[]  FPAYBILLENTRY;
        private Double FPAYAMOUNTFOR;
    }

    @Data
    public static class BillTypeIdDTO {
        private String fNumber;
        public BillTypeIdDTO(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class FBillNo {
        private String fNumber;
        public FBillNo(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class OrgIdDTO {
        private String fNumber;
        public OrgIdDTO(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class CurrencyIdDTO {
        private String fNumber;
        public CurrencyIdDTO(String fNumber){
            this.fNumber = fNumber;
        }
    }

    @Data
    public static class NumberEntity {
        private String fNumber;
        public NumberEntity(String fNumber){
            this.fNumber = fNumber;
        }
    }

    @Data
    public static class ContactUnitDTO {
        private String fNumber;
        public ContactUnitDTO(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class RectUnitDTO {
        private String fNumber;
    }

    @Data
    public static class SettleCurDTO {
        private String fNumber;
        public SettleCurDTO(String fNumber){
            this.fNumber = fNumber;
        }
    }

    @Data
    public static class DeptIdDTO {
        private String fNumber;
    }

    @Data
    public static class GroupIdDTO {
        private String fNumber;
    }

    @Data
    public static class MainBookIdDTO {
        private String fNumber;
        public MainBookIdDTO(String fNumber){
            this.fNumber = fNumber;
        }
    }

    @Data
    public static class PayBillEntryDTO {
        private Long fEntryId;
        private SettleTypeIdDTO fSettleTypeId;
        private PurposeIdDTO FPURPOSEID;
        private String fPayItem;
        private String fRecType;
        private String fPostDate;
        private String fPurchaseOrderNo;
        private Integer fMaterialSeq;
        private Long fOrderEntryId;
        private String fRuZhangType;
        private String fPayType;
        private String fEntryPrepayOrderNo;
        private String fPayMethod;
        private Double fCollectionAmount;
        private AssPurchaseOrderDTO[] fAssPurchaseOrder;
        private Double FPAYAMOUNTFOR_E;
        private Double FPAYAMOUNT_E;
        private String FPAYITEMTYPE;
        private Double FPAYTOTALAMOUNTFOR; //应付金额
        private Double FPURCHASEORDERID; //采购订单id
    }

    @Data
    public static class SettleTypeIdDTO {
        private String fNumber;
        public SettleTypeIdDTO(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class PurposeIdDTO {
        private String fNumber;
        public PurposeIdDTO(String fNumber){
            this.fNumber =fNumber;
        }
    }

    @Data
    public static class AssPurchaseOrderDTO {
        private Long FDetailID;
        private String FASSPURORDERNO;
        private AssMaterial FASSMATERIALID;
        private Long FASSORDERENTRYID;
    }

    @Data
    public static class AssMaterial {
        private String FNUMBER;
    }

    @Data
    public static class PayBillSrcEntryDTO {
        private Long fEntryId;
    }

    @Data
    public static class BillPayableEntryDTO {
        private Long fEntryId;
    }

    @Data
    public static class BillReceivableEntryDTO {
        private Long fEntryId;
    }

    @Data
    public static class PayBillMoreRecentEntryDTO {
        private Long fEntryId;
    }
}
